(function(TQE){
if(!TQE){ throw('必须先加载 TQEditor.js '); return ;}
var pe=TQE.prototype;

//接口, 取得编辑器的所有图片,返值为数组['image_1_src_url','image_2_src_url']
//参数 full_uri 是否是取完整的uri
pe.images=function(full_uri){
	var $=this, result=[],htm='',doc=$._getDoc(),a,i;
	if('code'===$.currentMode()){
		return result;
		//htm=$.content();
	}
	a=doc.getElementsByTagName('IMG');
	for(i=0;i<a.length;i++){
		result.push(full_uri ? a[i].src : a[i].getAttribute('src'));
	}
	return result;
};
//接口, 取得编辑器的所有flash,返值为数组
pe.flashs=function(){
	var $=this, result=[],htm='',doc=$._getDoc(),a,i;
	if('code'===$.currentMode()){
		return result;
		//htm=$.content();
	}
	a=doc.getElementsByTagName('EMBED');
	for(i=0;i<a.length;i++){
		if(a[i].getAttribute('type').toLowerCase().indexOf('shockwave-flash')<0 ||
			a[i].getAttribute('flashvars').toLowerCase().indexOf('.flv')) continue;
		result.push(full_uri ? a[i].src : a[i].getAttribute('src'));
	}
	return result;
};
//接口, 取得编辑器的所有flv,返值为数组
pe.flvs=function(){
	var $=this, result=[],htm='',doc=$._getDoc(),a,i;
	if('code'===$.currentMode()){
		return result;
		//htm=$.content();
	}
	a=doc.getElementsByTagName('EMBED');
	for(i=0;i<a.length;i++){
		if(a[i].getAttribute('flashvars').toLowerCase().indexOf('vcastr_file')<0) continue;
		/vcastr_file=([^\"& ]+)/i.exec(a[i].getAttribute('flashvars'));
		if(RegExp.$1)result.push(RegExp.$1);
	}
	return result;
};
//删除所有链接, 参数是回调函数, 返值表示是否允许删除
pe.removeLinks=function(callback){
	var $=this, doc=$._getDoc(),a,i,r;
	if('code'===$.currentMode()){
		return ;
		//htm=$.content();
	}
	a=doc.getElementsByTagName('A');
	if('function'===typeof callback){
		for(i=a.length-1;i>=0;i--){
			r=callback(a[i].getAttribute('href'))
			if(r)TQE.removeNode(a[i], false);
		}
	}else{
		for(i=a.length-1;i>=0;i--){
			TQE.removeNode(a[i], false);
		}
	}
	return ;
};
//删除所有图片, 参数是回调函数, 返值表示是否允许删除
pe.removeImages=function(callback){
	var $=this, doc=$._getDoc(),a,i,r;
	if('code'===$.currentMode()){
		return ;
		//htm=$.content();
	}
	a=doc.getElementsByTagName('IMG');
	if('function'===typeof callback){
		for(i=a.length-1;i>=0;i--){
			r=callback(a[i].getAttribute('src'))
			if(r)TQE.removeNode(a[i], false);
		}
	}else{
		for(i=a.length-1;i>=0;i--){
			TQE.removeNode(a[i], false);
		}
	}
	return ;
};
//删除所有图片, 参数是回调函数, 返值表示是否允许删除
pe.removeFlashs=function(callback){
	var $=this, doc=$._getDoc(),a,i,r;
	if('code'===$.currentMode()){
		return ;
		//htm=$.content();
	}
	a=doc.getElementsByTagName('EMBED');
	if('function'===typeof callback){
		for(i=a.length-1;i>=0;i--){
			r=callback(a[i].getAttribute('src'))
			if(r)TQE.removeNode(a[i], false);
		}
	}else{
		for(i=a.length-1;i>=0;i--){
			TQE.removeNode(a[i], false);
		}
	}
	return ;
};
//删除所有Object对象
pe.removeObjects=function(){
	var $=this, doc=$._getDoc(),a,i,r;
	if('code'===$.currentMode()){
		return ;
		//htm=$.content();
	}
	a=doc.getElementsByTagName('OBJECT');
	for(i=a.length-1;i>=0;i--){
		TQE.removeNode(a[i], false);
	}
};

//得到选中的文本, 不含html代码,参数 br2nl 表示将 br,p,div,li,ol,ul,tr, 等转为 换行 
pe.getSelectText=function(br2nl){
	var $=this,htm=$.getSelectHtml();
	if(br2nl) htm=htm.replace(/<(br|p|div|ul|ol|li|tr)[^>]*>\n?/g,"\n");
	return htm.replace(/<(textarea|select|script|style)[^>]*>.*?<\/\1>/ig ,'')
		.replace(/<\/?[a-z][^>]*>/ig,'')
		.replace(/\n+/g ,'\n')
		.replace(/&lt;/g ,'<')
		.replace(/&gt;/g ,'>')
		.replace(/&nbsp;/g ,' ');
};
//得到选中的网页源码 在代码模式时
pe.getSelectHtml=function(){
	var $=this;
	if('code'==$.currentMode()){
		var editor=$._editorObj();
		if(document.selection){//ie
			var r = document.selection.createRange();
			return r.text;
		}
		if(editor.selectionStart != editor.selectionEnd){
			return editor.value.substring(editor.selectionStart,editor.selectionEnd);
		}
		return '';
	}
	if($.activeTable){
		var table,i,j,node=TQE.CE('DIV');
		node.innerHTML=$.activeTable.outerHTML;
		table=node.firstChild;
		for(  i=table.rows.length-1; i>=0;i--){
			for(j=table.rows[i].cells.length-1;j>=0;j--){
				if(table.rows[i].cells[j].className=='selectedTD'){
					table.rows[i].cells[j].className='';
				}else{
					table.rows[i].removeChild(table.rows[i].cells[j]);
				}
			}
			if(table.rows[i].cells.length<1){
				table.rows[i].parentNode.removeChild(table.rows[i]);
			}
		}
		return node.innerHTML;;
	}

	$.focus();
	var rang=$._getRange(),
		str=rang.htmlText;
	if(str){//ie6,7,8,9
		return str;
	}else{
		var node=TQE.CE('DIV'), nodes=rang.cloneContents().childNodes;
		while(nodes.length)node.appendChild(nodes[0])
		return node.innerHTML;
	}
};

})(window.TQE);